var txt = "/*\n" +
        " * %W% %E%\n" +
        " *\n" +
        " * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.\n" +
        " * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\n" +
        " */\n" +
        "\n" +
        "package java.io;\n" +
        "\n" +
        "import java.nio.charset.Charset;\n" +
        "import java.nio.charset.CharsetDecoder;\n" +
        "import sun.nio.cs.StreamDecoder;\n" +
        "\n" +
        "\n" +
        "/**\n" +
        " * An InputStreamReader is a bridge from byte streams to character streams: It\n" +
        " * reads bytes and decodes them into characters using a specified {@link\n" +
        " * java.nio.charset.Charset <code>charset</code>}.  The charset that it uses\n" +
        " * may be specified by name or may be given explicitly, or the platform's\n" +
        " * default charset may be accepted.\n" +
        " *\n" +
        " * <p> Each invocation of one of an InputStreamReader's read() methods may\n" +
        " * cause one or more bytes to be read from the underlying byte-input stream.\n" +
        " * To enable the efficient conversion of bytes to characters, more bytes may\n" +
        " * be read ahead from the underlying stream than are necessary to satisfy the\n" +
        " * current read operation.\n" +
        " *\n" +
        " * <p> For top efficiency, consider wrapping an InputStreamReader within a\n" +
        " * BufferedReader.  For example:\n" +
        " *\n" +
        " * <pre>\n" +
        " * BufferedReader in\n" +
        " *   = new BufferedReader(new InputStreamReader(System.in));\n" +
        " * </pre>\n" +
        " *\n" +
        " * @see BufferedReader\n" +
        " * @see InputStream\n" +
        " * @see java.nio.charset.Charset\n" +
        " *\n" +
        " * @version     %I%, %E%\n" +
        " * @author      Mark Reinhold\n" +
        " * @since       JDK1.1\n" +
        " */\n" +
        "\n" +
        "public class InputStreamReader extends Reader {\n" +
        "\n" +
        "    private final StreamDecoder sd;\n" +
        "\n" +
        "    /**\n" +
        "     * Creates an InputStreamReader that uses the default charset.\n" +
        "     *\n" +
        "     * @param  in   An InputStream\n" +
        "     */\n" +
        "    public InputStreamReader(InputStream in) {\n" +
        "        super(in);\n" +
        "        try {\n" +
        "            sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## check lock object\n" +
        "        } catch (UnsupportedEncodingException e) {\n" +
        "            // The default encoding should always be available\n" +
        "            throw new Error(e);\n" +
        "        }\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Creates an InputStreamReader that uses the named charset.\n" +
        "     *\n" +
        "     * @param  in\n" +
        "     *         An InputStream\n" +
        "     *\n" +
        "     * @param  charsetName\n" +
        "     *         The name of a supported\n" +
        "     *         {@link java.nio.charset.Charset </code>charset<code>}\n" +
        "     *\n" +
        "     * @exception  UnsupportedEncodingException\n" +
        "     *             If the named charset is not supported\n" +
        "     */\n" +
        "    public InputStreamReader(InputStream in, String charsetName)\n" +
        "            throws UnsupportedEncodingException\n" +
        "    {\n" +
        "        super(in);\n" +
        "        if (charsetName == null)\n" +
        "            throw new NullPointerException(\"charsetName\");\n" +
        "        sd = StreamDecoder.forInputStreamReader(in, this, charsetName);\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Creates an InputStreamReader that uses the given charset. </p>\n" +
        "     *\n" +
        "     * @param  in       An InputStream\n" +
        "     * @param  cs       A charset\n" +
        "     *\n" +
        "     * @since 1.4\n" +
        "     * @spec JSR-51\n" +
        "     */\n" +
        "    public InputStreamReader(InputStream in, Charset cs) {\n" +
        "        super(in);\n" +
        "        if (cs == null)\n" +
        "            throw new NullPointerException(\"charset\");\n" +
        "        sd = StreamDecoder.forInputStreamReader(in, this, cs);\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Creates an InputStreamReader that uses the given charset decoder.  </p>\n" +
        "     *\n" +
        "     * @param  in       An InputStream\n" +
        "     * @param  dec      A charset decoder\n" +
        "     *\n" +
        "     * @since 1.4\n" +
        "     * @spec JSR-51\n" +
        "     */\n" +
        "    public InputStreamReader(InputStream in, CharsetDecoder dec) {\n" +
        "        super(in);\n" +
        "        if (dec == null)\n" +
        "            throw new NullPointerException(\"charset decoder\");\n" +
        "        sd = StreamDecoder.forInputStreamReader(in, this, dec);\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Returns the name of the character encoding being used by this stream.\n" +
        "     *\n" +
        "     * <p> If the encoding has an historical name then that name is returned;\n" +
        "     * otherwise the encoding's canonical name is returned.\n" +
        "     *\n" +
        "     * <p> If this instance was created with the {@link\n" +
        "     * #InputStreamReader(InputStream, String)} constructor then the returned\n" +
        "     * name, being unique for the encoding, may differ from the name passed to\n" +
        "     * the constructor. This method will return <code>null</code> if the\n" +
        "     * stream has been closed.\n" +
        "     * </p>\n" +
        "     * @return The historical name of this encoding, or\n" +
        "     *         <code>null</code> if the stream has been closed\n" +
        "     *\n" +
        "     * @see java.nio.charset.Charset\n" +
        "     *\n" +
        "     * @revised 1.4\n" +
        "     * @spec JSR-51\n" +
        "     */\n" +
        "    public String getEncoding() {\n" +
        "        return sd.getEncoding();\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Reads a single character.\n" +
        "     *\n" +
        "     * @return The character read, or -1 if the end of the stream has been\n" +
        "     *         reached\n" +
        "     *\n" +
        "     * @exception  IOException  If an I/O error occurs\n" +
        "     */\n" +
        "    public int read() throws IOException {\n" +
        "        return sd.read();\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Reads characters into a portion of an array.\n" +
        "     *\n" +
        "     * @param      cbuf     Destination buffer\n" +
        "     * @param      offset   Offset at which to start storing characters\n" +
        "     * @param      length   Maximum number of characters to read\n" +
        "     *\n" +
        "     * @return     The number of characters read, or -1 if the end of the \n" +
        "     *             stream has been reached\n" +
        "     *\n" +
        "     * @exception  IOException  If an I/O error occurs\n" +
        "     */\n" +
        "    public int read(char cbuf[], int offset, int length) throws IOException {\n" +
        "        return sd.read(cbuf, offset, length);\n" +
        "    }\n" +
        "\n" +
        "    /**\n" +
        "     * Tells whether this stream is ready to be read.  An InputStreamReader is\n" +
        "     * ready if its input buffer is not empty, or if bytes are available to be\n" +
        "     * read from the underlying byte stream.\n" +
        "     *\n" +
        "     * @exception  IOException  If an I/O error occurs\n" +
        "     */\n" +
        "    public boolean ready() throws IOException {\n" +
        "        return sd.ready();\n" +
        "    }\n" +
        "\n" +
        "    public void close() throws IOException {\n" +
        "        sd.close();\n" +
        "    }\n" +
        "}";
